#ifndef OMeshFromStrandsModifier_H__
#define OMeshFromStrandsModifier_H__

enum
{
	// Dynamic attributes defined on enum class PlugId
	mfs_PLUGS = 1000,
	
	//////////////////////////////////////////////////////////////////////////
	// Object attributes -- DO NOT CHANGE, attribute keys on saved projects
	mfs_START = 2000,
	
	mfs_MeshTypeAttribute,
	mfs_SideCountAttribute,
	
	mfs_StrandGroupAttribute,
	mfs_TangentNormalsAttribute,
	mfs_RandomSeedAttribute,
	mfs_CrossSectionRampAttribute,
	mfs_IsGuideMeshAttribute,

	mfs_Group_MappingCoordinates = 2100,
	mfs_MappingTypesAttribute,
	mfs_MapChannelCountAttribute,
	mfs_SelectedMapChannelAttribute,
	mfs_UsePerStrandMappingAttribute,
	mfs_CreateTextureAtlasAttribute,
	mfs_OneTextureIslandPerStrandGroupAttribute,
	mfs_BaseChannelsAttribute,
	mfs_MapCoordinateStretchesAttribute,

	mfs_MappingTypesAttribute_Array = 2150,
	mfs_UsePerStrandMappingAttribute_Array,
	mfs_CreateTextureAtlasAttribute_Array,
	mfs_OneTextureIslandPerStrandGroupAttribute_Array,
	mfs_BaseChannelsAttribute_Array,
	mfs_MapCoordinateStretchesAttribute_Array,

//	mfs_SelectedVerticesAttribute,	// ???
//	mfs_GroupIdsAttribute,			// ???

	mfs_Group_ShaderList = 2200,
	mfs_ShaderListAttribute,
	mfs_ShaderScatterMultiplierAttribute,
	mfs_ScatterMaterialidChannelAttribute,
	mfs_UseStrandGroupsForMaterialIdsAttribute,

	mfs_Group_ProxyMeshes = 2300,
	mfs_ProxyMeshesAttribute,
	mfs_ProxyInheritRotationAttribute,
	mfs_ProxyInheritShapeAttribute,
	mfs_ProxyInheritWidthAttribute,
	mfs_ProxyIsUniformScaleAttribute,
	mfs_ProxyScatterChannelAttribute,
	mfs_IgnoreHiddenStrandsAttribute,
	
	
	// Buttons
	
	mfs_Button_MeshType_Cylindrical = 3000,
	mfs_Button_MeshType_Ribbon,
	mfs_Button_MeshType_ProxyMesh,

	mfs_Button_MappingType_PerVertex,
	mfs_Button_MappingType_PerSegment,
	mfs_Button_MappingType_PerEdge,
	mfs_Button_MappingType_PerStrand,
	mfs_Button_MappingType_GuideMesh,
	mfs_Button_MappingType_Inherit,

	mfs_Button_CreateNucleusSimulation,

	mfs_Button_Rebuild,
	mfs_Button_Export,

	mfs_ConformToSurfaceAttribute,

	mfs_END
};

enum
{
	// Same order as MeshFromHairGenerator::MeshType
	mfs_MeshType_Cylindrical,
	mfs_MeshType_Ribbon,
	mfs_MeshType_ProxyMesh,
	//
	mfs_MeshType_Count
};

enum
{
	// Same order as MeshFromHairGenerator::MappingCoordinatesMethod
	mfs_MappingType_PerVertex,
	mfs_MappingType_PerSegment,
	mfs_MappingType_PerEdge,
	mfs_MappingType_PerStrand,
	mfs_MappingType_GuideMesh,
	mfs_MappingType_Inherit,
	//
	mfs_MappingType_Count
};

enum
{
	// Same order as MeshFromHairGenerator::ConformToSurfaceType
	mfs_ConformToSurface_IgnoreSurface,
	mfs_ConformToSurface_SurfaceNormal,
	//
	mfs_ConformToSurface_Count
};

#endif
